package com.portal.common.redis.anno;


import com.portal.common.core.constant.CacheConstants;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RateLimiter {
    /**
     * 限流的key
     */
    String key() default CacheConstants.RATE_LIMIT_KEY;

    /**
     * 限流时间:单位为秒，默认值为5。表示在指定时间内进行限流计算。
     */
    int time() default 5;

    /**
     * 限流次数 默认值为10。表示在指定时间内允许通过的请求次数。
     */
    int count() default 10;
    /**
     * 限流类型 用于指定限流的策略，例如默认策略、IP策略等
     */
    LimitType limitType() default LimitType.CUSTOMER;

    /**
     * 限流规则，默认令牌桶算法
     */
    LimitRule limitRule() default LimitRule.TokenBucket;


}